<?php
class Embarque{
	var $id_embarque="-1";
	var $aereolinea;
	var $fecha;
	var $num_envios;
	var $peso_total;
	var $costo_total;


	function __construct()
	{	
		switch(func_num_args())
		{
			case 1:	if(trim(func_get_arg(0)) =="")return;
					$this->setId( func_get_arg( 0 ) );
					$this->cargar();
					break;
		}		
	}
	
	function cargar(){
		$con= new Conexion();
		$con->ejecutar("select * from embarques where id_embarque=".$this->getId());

		if($con->traerFilaPorNombre()){
			$this->aereolinea=new Aereolinea($con->get('id_aereolinea'));
			$this->setNumEnvios($con->get('num_envios'));
			$this->setPesoTotal($con->get('peso_total'));
			$this->fecha= new Fecha($con->get('fecha'));
			
			$this->setNumEnviosADomicilio($con->get('num_envios_a_domicilio'));
			$this->setNumEnviosParciales($con->get('num_envios_parciales'));
			$this->setNumEnviosPagados($con->get('num_envios_pagados'));
			$this->setActivo($con->get('activo'));
		}else
			$this->setId( "-1" );
	}
	
	
	
	function toGrid()
	{
		$o = array(
			"id"=>$this->getId(),
			"num_envios"=>$this->getNumEnvios(),
			"adomicilio"=>$this->getNumEnviosADomicilio(),
			"parciales"=>$this->getNumEnviosParciales(),
			"pagados"=>$this->getNumEnviosPagados(),
			"fecha"=>$this->fecha->toMDA(),
			"peso_total"=> $this->getPesoTotal()."Kg/".ktol($this->getPesoTotal())."Lb",
		);

		if($this->aereolinea->getLogo()!="")
			$o["servicio"] ='<img src="img/'.$this->aereolinea->getLogo().'" >';
		else
			$o["servicio"]= $this->aereolinea->getNombre();

		if($this->getActivo()){
			$o["estatus"]='En transito';
			$o['servicio'].='<div class="grid_guia_estatus dembarque">En transito</div>';
		}else
			$o["estatus"]='';


		return $o;
	}
	
	function listarGrid($pagina,$query)
	{
		$con=new Conexion();
		
		$con->ejecutar($query);
		$respuesta=array("numFilas"=>$con->numFilasResultado());
					
		$con->ejecutar($query." limit ".(($pagina-1)*PAGINA_CUANTOS).",".PAGINA_CUANTOS.";");
		
		while($con->traerFilaPorNombre()) {
			$this->setId($con->get("id_embarque"));
			$this->cargar();
			$respuesta["data"][count($respuesta["data"])]= $this->toGrid();#esto es como un push($this->toGrid())
	    }

		#imprimir el resultado
		return json_encode($respuesta);		
	}
	
	function listar($pagina,$parametros){
		$sql=$this->filtroSQL($parametros);
		return $this->listarGrid($pagina,$sql);
	}

	function filtroSQL($p)
	{
		//$p=json_decode( fromURL($p) );
		return "select * from embarques order by id_embarque desc";
	}

	function cargarEnvios(){
		$con=new Conexion();
		$con->ejecutar("select id_envio from envios_embarques e where id_embarque=".$this->getId());
		#meter todos los envios de esa canasta
		
		for($i=0; $i<$con->numFilasResultado(); $i++){
			$envio= new EnvioEmbarque();
			$envio->setId($con->resultado($i,0));
			$envio->cargarSoloEnvio();
			$this->envios[count($this->envios)]=$envio;
			
			unset($envio);
		}
	}

	
	function agregar(){
		$canasta=json_decode( str_replace("\\\"", "\"",$_POST['canasta']) );
		$con=new Conexion();
		
		$con->ejecutar("select id_aereolinea from aereolinea where nombre='".$_POST['txt_aeroembarque']."'");
		$id_ae=$con->resultado(0,0);
		
		$con->ejecutar("insert into embarques values(null,'".$id_ae."','".$_POST['txt_fembarque']."',".count($canasta).",0,0,0,0,1);");
		$con->ejecutar("select max(id_embarque)  from embarques");
		
		$id_embarque=$con->resultado(0,0);
		
		$envio=new Envio();
		$num_envios_a_domicilio=0;
		$num_envios_parciales=0;
		$num_envios_pagados=0;		
		$peso_total=0;
		
		#meter todos los envios de esa canasta
		for($i=0; $i<count($canasta); $i++){
			$envio->setId($canasta[$i]->id);
			$envio->cargarSoloEnvio();
			
			
			#hacer las sumas
			if($envio->getTipoEntrega()=="A domicilio")
				$num_envios_a_domicilio++;
			if($canasta[$i]->c=="Parcial")
				$num_envios_parciales++;
			if($envio->getTipoServicio()=="Pagado")
				$num_envios_pagados++;		

			$peso_total+=$envio->getPeso();
			
			$con->ejecutar("insert into envios_embarques values('".$id_embarque."','".$envio->getId()."','".$canasta[$i]->c."')");
			
			$envio->editarEstatus("En transito");

                        #actualizar la fecha del embar que del envio
                        $con->ejecutar("update historial_estatus set fecha='".$_POST['txt_fembarque']."' where id_envio='".$envio->getId()."' and estatus='En transito'");
//			$envio->agregarEstatus("En transito");
		}
		
		$con->ejecutar("update embarques set num_envios_a_domicilio='".$num_envios_a_domicilio."',
						num_envios_parciales='".$num_envios_parciales."',num_envios_pagados='".$num_envios_pagados."',
						peso_total='".$peso_total."' where id_embarque='".$id_embarque."'");
						
		echo "{success:true,id:".$id_embarque."}";
	}
	
	
	function desembarcar(){
		$con=new Conexion();
		$con->ejecutar("select id_envio from envios_embarques e where id_embarque=".$this->getId());
		#meter todos los envios de esa canasta
		$envio=new Envio();
		for($i=0; $i<$con->numFilasResultado(); $i++){
			$envio->setId($con->resultado($i,0));
			$envio->cargarSoloEnvio();

			$envio->editarEstatus("Listo para entregar");
		}
		$con->ejecutar("update embarques set activo=0 where id_embarque=".$this->getId());
	}
	
	
	function setId($_x){$this->id_embarque= $_x;}
	function setNumEnvios($_x){$this->num_envios= $_x;}
	function setNumEnviosADomicilio($_x){$this->num_enviosdomicilio= $_x;}
	function setNumEnviosParciales($_x){$this->num_enviosparciales= $_x;}
	function setNumEnviosPagados($_x){$this->num_enviospagados= $_x;}
	function setPesoTotal($_x){$this->peso_total= $_x;}
	function setCostoTotal($_x){$this->costo_total= $_x;}
	function setCostoPagado($_x){$this->costo_totalpagado= $_x;}
	function setActivo($_x){$this->activo= $_x;}
	
	
	function getId(){return $this->id_embarque;}

	function getNumEnvios(){return $this->num_envios;}
	function getNumEnviosADomicilio(){return $this->num_enviosdomicilio;}
	function getNumEnviosParciales(){return $this->num_enviosparciales;}
	function getNumEnviosPagados(){return $this->num_enviospagados;}
	function getPesoTotal(){return $this->peso_total;}
	function getCostoTotal(){return $this->costo_total;}
	function getCostoPagado(){return $this->costo_totalpagado;}
	function getActivo(){return $this->activo;}
	
	function vacio(){
		return ($this->getId()== "-1")?true:false;
	}
}
?>